/**
 **************************************************************************************************************************
 * 
 **************************************************************************************************************************
 * @file RBEffectTechnique.h
 **************************************************************************************************************************/

#pragma once

#ifdef  HEADER_MSG
#pragma HEADER_MSG(RBEffectTechnique.h)
#endif


/**************************************************************************************************************************
 * Includes
 **************************************************************************************************************************/
#include "RBMain/RBCommon.h"

/**************************************************************************************************************************
 * Forward declarations
 **************************************************************************************************************************/
class RBEffectPass;

/**************************************************************************************************************************
 * Classes
 **************************************************************************************************************************/
class RBEffectTechnique
{
    friend class RBEffectCompiler;
public:
                   ~RBEffectTechnique();

    RBEffectPass*   GetPass         (uint32 ui) const { return m_vPasses[ui]; }
    uint32          GetPassCount    () const          { return m_vPasses.size();}
    void*           GetNative       () const          { return m_pNative; }

    void            AddPass         (RBEffectPass* p) { m_vPasses.push_back(p); }

private:
    std::vector<RBEffectPass*> m_vPasses;
    void*           m_pNative;
};